#include "jit_assert.hpp"
#include <stdarg.h>
#include <stdio.h>
#include <string>

int logWarn(const char * fmt,...)
{
    va_list l;
    std::string buf;
    va_start(l,fmt);
    int len = vsnprintf(NULL,0,fmt,l);
    va_end(l);
    buf.resize(len + 1);
    char * strBuf = const_cast<char*>(buf.data());
    va_start(l,fmt);
    vsnprintf(strBuf,len + 1,fmt,l);
    va_end(l);
    fprintf(stderr,"WARN:%s\n",strBuf);
    return len;
}

int logVerbose(const char * fmt,...)
{
    va_list l;
    std::string buf;
    va_start(l,fmt);
    int len = vsnprintf(NULL,0,fmt,l);
    va_end(l);
    buf.resize(len + 1);
    char * strBuf = const_cast<char*>(buf.data());
    va_start(l,fmt);
    vsnprintf(strBuf,len + 1,fmt,l);
    va_end(l);
    fprintf(stderr,"VERBOSE:%s\n",strBuf);
    return len;
}

int logDebug(const char *fmt,...)
{
    va_list l;
    std::string buf;
    va_start(l,fmt);
    int len = vsnprintf(NULL,0,fmt,l);
    va_end(l);
    buf.resize(len + 1);
    char * strBuf = const_cast<char*>(buf.data());
    va_start(l,fmt);
    vsnprintf(strBuf,len + 1,fmt,l);
    va_end(l);
    fprintf(stderr,"DEBUG:%s\n",strBuf);
    return len;
}
